# profiing: cProfile&pstats

# 参考

# demo

import time
import requests
import sqlite3
from flask import Flask

app = Flask(__name__)

# 模拟外部 API 请求
def simulate_api_request():
    # 使用 requests 发起一个 GET 请求,模拟对外部 API 的调用
    response = requests.get('https://jsonplaceholder.typicode.com/posts/1')
    return response.json()

# 模拟数据库查询
def simulate_database_query():
    # 连接到 SQLite 数据库并执行一个简单的查询
    conn = sqlite3.connect(':memory:')  # 创建一个内存中的数据库
    cursor = conn.cursor()
    cursor.execute("CREATE TABLE users (id INTEGER PRIMARY KEY, name TEXT, age INTEGER)")
    cursor.execute("INSERT INTO users (name, age) VALUES (?, ?)", ('Alice', 30))
    conn.commit()
  
    # 执行查询操作
    cursor.execute("SELECT * FROM users")
    rows = cursor.fetchall()
    conn.close()
    return rows

# 模拟文件 I/O 操作
def simulate_file_io():
    # 模拟文件读写操作
    file_name = 'example.txt'
    with open(file_name, 'w') as file:
        file.write('This is an example text.')

    with open(file_name, 'r') as file:
        content = file.read()
  
    # 删除文件
    import os
    os.remove(file_name)
  
    return content

@app.route('/')
def index():
    return 'Welcome to my Flask App!'

import cProfile

@app.route('/simulate')
def simulate_operations():
    profiler = cProfile.Profile()
    profiler.enable()

    simulate_api_request()
    simulate_database_query()
    simulate_file_io()

    profiler.disable()
    profiler.print_stats(sort='cumulative')  # 在控制台打印耗时最多的函数调用信息
    return 'Simulated API request, database query, and file I/O.'


if __name__ == '__main__':
    app.run(debug=True)